package com.zhang.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhang.order.dto.OrderSaveDto;
import com.zhang.order.entity.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhang.order.vo.OrderAppraiseVo;
import com.zhang.order.vo.OrderDetailVo;
import com.zhang.order.vo.UserEarningsVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 订单 服务类
 * </p>
 *
 * @author 创世神
 * @since 2023-12-05
 */
public interface IOrderService extends IService<Order> {

    String saveOrder(OrderSaveDto order);

    /**
     * 分页查询指定用户的订单列表（根据订单状态）
     *
     * @param queryMap
     * @return {@link Page}
     */
    Page listByStatusAndUser(Map<String, String> queryMap);

    OrderDetailVo getOrderInfo(Long orderId);

    /**将订单状态更改为已支付
     * @param order
     */
    void updateOrderToPay(Order order);

    /**
     * 修改订单为收货状态
     *
     * @param orderId
     */
    void receive(Long orderId);

    void updateOrderToSend(String orderId);

    /**
     * 获取一个订单的评价vo
     *
     * @param orderId
     * @return {@link List}<{@link OrderAppraiseVo}>
     */
    List<OrderAppraiseVo> getOrderAppraise(String orderId);

    /**完成订单
     * @param order 订单详情
     */
    void orderFinish(Order order);

    /**
     * 获取商户的收益情况
     *
     * @param loginUser
     * @return {@link UserEarningsVO}
     */
    UserEarningsVO userEarnings(Long loginUser);
}
